/**
 * 代码块分为普通代码块和静态代码块
 * 普通代码块，是在类对象创建的时候执行，执行在构造函数之前，和成员变量初始值一样，且每个对象创建时只执行一次
 * 静态代码块和静态方法、静态变量一样，是在类初始的时候执行。
 *
 * 下面这段代码的执行优先级 ： 静态代码块-> 普通代码块 -> 构造方法，至于没写静态方法或静态变量，是因为调用才执行，不调用不执行。
 */
public class CodeBlock {

    CodeBlock(){
        System.out.println("我是构造方法，创建类对象并完成默认赋值后，才执行");
    }

    static int a = 10;  //类的静态变量

    {
        System.out.println("我是普通代码块，创建类对象时才执行，执行在静态代码块,静态变量和静态方法之后");
    }
    static {  //类的静态代码块，类初始化的时候就执行，执行在普通代码块之后，构造方法之前。
        System.out.println("我是静态代码块，类的属性，和静态变量和静态方法一样，类初始化的时候就执行，是最早执行的");
    }

    static int test(){  //静态方法
        return a;
    }



}
